xen-2.4.16/foo
xen-2.4.16/common/domain.c.smh
URK
+tools/domain_builder/dom_builder.o
+tools/domain_builder/dom_kill.o
+tools/domain_builder/domain_builder
+tools/domain_builder/kill_domain
+xen/arch/i386/acpitable.o
+xen/arch/i386/apic.o
+xen/arch/i386/arch.o
+xen/arch/i386/boot/boot.o
+xen/arch/i386/delay.o
+xen/arch/i386/entry.o
+xen/arch/i386/extable.o
+xen/arch/i386/i387.o
+xen/arch/i386/i8259.o
+xen/arch/i386/idle0_task.o
+xen/arch/i386/io_apic.o
+xen/arch/i386/ioremap.o
+xen/arch/i386/irq.o
+xen/arch/i386/mm.o
+xen/arch/i386/mpparse.o
+xen/arch/i386/pci-dma.o
+xen/arch/i386/pci-i386.o
+xen/arch/i386/pci-irq.o
+xen/arch/i386/pci-pc.o
+xen/arch/i386/process.o
+xen/arch/i386/rwlock.o
+xen/arch/i386/setup.o
+xen/arch/i386/smp.o
+xen/arch/i386/smpboot.o
+xen/arch/i386/time.o
+xen/arch/i386/trampoline.o
+xen/arch/i386/traps.o
+xen/arch/i386/usercopy.o
+xen/common/ac_timer.o
+xen/common/block.o
+xen/common/brlock.o
+xen/common/common.o
+xen/common/dom0_ops.o
+xen/common/domain.o
+xen/common/domain_page.o
+xen/common/event.o
+xen/common/kernel.o
+xen/common/keyhandler.o
+xen/common/lib.o
+xen/common/memory.o
+xen/common/network.o
+xen/common/page_alloc.o
+xen/common/perfc.o
+xen/common/resource.o
+xen/common/schedule.o
+xen/common/slab.o
+xen/common/softirq.o
+xen/common/timer.o
+xen/common/vsprintf.o
+xen/drivers/block/blkpg.o
+xen/drivers/block/driver.o
+xen/drivers/block/elevator.o
+xen/drivers/block/genhd.o
+xen/drivers/block/ll_rw_blk.o
+xen/drivers/block/xen_block.o
+xen/drivers/char/driver.o
+xen/drivers/char/xen_kbd.o
+xen/drivers/char/xen_serial.o
+xen/drivers/ide/driver.o
+xen/drivers/ide/ide-disk.o
+xen/drivers/ide/ide-dma.o
+xen/drivers/ide/ide-features.o
+xen/drivers/ide/ide-geometry.o
+xen/drivers/ide/ide-pci.o
+xen/drivers/ide/ide-probe.o
+xen/drivers/ide/ide-taskfile.o
+xen/drivers/ide/ide-xeno.o
+xen/drivers/ide/ide.o
+xen/drivers/ide/piix.o
+xen/drivers/net/3c59x.o
+xen/drivers/net/Space.o
+xen/drivers/net/driver.o
+xen/drivers/net/e1000/e1000.o
+xen/drivers/net/e1000/e1000_ethtool.o
+xen/drivers/net/e1000/e1000_hw.o
+xen/drivers/net/e1000/e1000_main.o
+xen/drivers/net/e1000/e1000_param.o
+xen/drivers/net/ne/8390.o
+xen/drivers/net/ne/ne.o
+xen/drivers/net/ne/ne_drv.o
+xen/drivers/net/net_init.o
+xen/drivers/net/setup.o
+xen/drivers/net/tg3.o
+xen/drivers/pci/classlist.h
+xen/drivers/pci/compat.o
+xen/drivers/pci/devlist.h
+xen/drivers/pci/driver.o
+xen/drivers/pci/gen-devlist
+xen/drivers/pci/names.o
+xen/drivers/pci/pci.o
+xen/drivers/pci/quirks.o
+xen/drivers/pci/setup-res.o
+xen/drivers/scsi/aacraid/aachba.o
+xen/drivers/scsi/aacraid/aacraid.o
+xen/drivers/scsi/aacraid/commctrl.o
+xen/drivers/scsi/aacraid/comminit.o
+xen/drivers/scsi/aacraid/commsup.o
+xen/drivers/scsi/aacraid/dpcsup.o
+xen/drivers/scsi/aacraid/linit.o
+xen/drivers/scsi/aacraid/rx.o
+xen/drivers/scsi/aacraid/sa.o
+xen/drivers/scsi/constants.o
+xen/drivers/scsi/driver.o
+xen/drivers/scsi/hosts.o
+xen/drivers/scsi/scsi.o
+xen/drivers/scsi/scsi_dma.o
+xen/drivers/scsi/scsi_error.o
+xen/drivers/scsi/scsi_ioctl.o
+xen/drivers/scsi/scsi_lib.o
+xen/drivers/scsi/scsi_merge.o
+xen/drivers/scsi/scsi_proc.o
+xen/drivers/scsi/scsi_queue.o
+xen/drivers/scsi/scsi_scan.o
+xen/drivers/scsi/scsi_syms.o
+xen/drivers/scsi/scsicam.o
+xen/drivers/scsi/sd.o
+xen/image
+xen/image.gz
+xen/include/asm
+xen/include/linux
+xen/net/dev.o
+xen/net/dev_mcast.o
+xen/net/devinit.o
+xen/net/eth.o
+xen/net/network.o
+xen/net/skbuff.o
+xen/tools/elf-reloc
if(mem_fd < 0){
perror(PERR_STRING);
}
-
- if(write(mem_fd, (dom_mem_t *)dom_mem, sizeof(dom_mem_t)) < 0){
- dbstatus("Error unmapping domain's memory.\n");
- }
+
+ if(write(mem_fd, (dom_mem_t *)dom_mem, sizeof(dom_mem_t)) < 0){
+ dbstatus("Error unmapping domain's memory.\n");
+ }
close(mem_fd);
}
close(id_fd);
sprintf(cmd_path, "Reserved %ld kbytes memory and assigned id %d to the"
- "new domain.", req_mem, dom_data->domain);
+ " new domain.", req_mem, dom_data->domain);
dbstatus(cmd_path);
return dom_data;
dbstatus("Launched the new domain!");
close(cmd_fd);
+ return 0;
}
int main(int argc, char **argv)
int kernel_fd;
int count;
int cmd_len;
- int ret = 0;
+ int rc = -1;
- unsigned long addr;
+ unsigned long addr;
- if(argc < 4){
+ if(argc < 4) {
dberr("Usage: dom_builder <kbytes_mem> <image> <num_vifs> "
- "<boot_params>\n");
- ret = -1;
+ "<boot_params>\n");
goto out;
}
/* create new domain and set up all the neccessary mappings */
kernel_fd = do_kernel_chcks(argv[2], atol(argv[1]), &load_addr, &ksize);
- if(kernel_fd < 0){
- ret = -1;
+ if(kernel_fd < 0) {
+ rc = errno;
goto out;
}
-
+
/* request the creation of new domain */
- dom_data = create_new_domain(atol(argv[1]));
- if(dom_data == 0){
- ret = -1;
+ if(!(dom_data = create_new_domain(atol(argv[1]))))
goto out;
- }
/* map domain's memory */
- if(map_dom_mem(dom_data->pg_head, dom_data->memory_kb >> (PAGE_SHIFT - 10),
- dom_data->domain, &dom_os_image)){
- ret = -1;
+ if(map_dom_mem(dom_data->pg_head, dom_data->memory_kb >> (PAGE_SHIFT-10),
+ dom_data->domain, &dom_os_image))
goto out;
- }
/* the following code does the actual domain building */
- meminfo = setup_guestos(dom_data->domain, kernel_fd, load_addr, ksize,
- &dom_os_image);
- if(meminfo == NULL){
- printf("Domain Builder: debug: meminfo NULL\n");
- ret = -1;
- dom_mem_cleanup(&dom_os_image);
+ meminfo = setup_guestos(dom_data->domain, kernel_fd, load_addr,
+ ksize, &dom_os_image);
+
+ /* and unmap the new domain's memory image since we no longer need it */
+ dom_mem_cleanup(&dom_os_image);
+
+ if(!meminfo) {
+ printf("Domain Builder: debug: meminfo NULL\n");
goto out;
}
- dom_mem_cleanup(&dom_os_image);
-
meminfo->virt_load_addr = load_addr;
meminfo->num_vifs = atoi(argv[3]);
meminfo->cmd_line[0] = '\0';
dbstatus(status);
/* and launch the domain */
- if(launch_domain(meminfo) != 0)
- ret = -1;
-
+ rc = launch_domain(meminfo);
out:
- if( ret >= 0 )
+ if( rc >= 0 )
return meminfo->domain;
else
- return ret;
+ return rc;
}